/* p.c */

#define N 500

int main()
{
  int PRIME[N]; // tablica N liczb pierwszych
  int n; // n przebiega liczby nieparzyste, ktore sa kandydatami na liczby pierwsze
  int j; // ile znaleziono liczb pierwszych
  int k; //
  int q, r;
  int M = 0, B = 0;
  int i;
  int BUFFER[100]; // bufor 0-49 i 50 - 99
 P1: // inicjowanie tablicy
  PRIME[0] = 0;
  PRIME[1] = 2;
  n = 3;
  j = 1;
 P2: // n jest liczba pierwsza
  j = j + 1;
  PRIME[j] = n;
 P3: // czy juz 500?
  if (j == 499) goto P9;
 P4: // zwiekszanie n
  n = n + 2;
 P5: // k <- 2
  k = 2;
 P6: // czy PRIME[k] dzieli n?
  q = n / PRIME[k];
  r = n % PRIME[k];
  if (r == 0) goto P4;
 P7: // czy PRIME[k] duze?
  if (q <= PRIME[k]) goto P2;
 P8: // zwiekszanie k
  k = k + 1;
  goto P6;
 P9: // drukowanie tytulu
  B = 1;
  M = 0;
  i = 0;
 P10: // zestawianie wiersza
  switch (B) {
  case 0:
    BUFFER[M] = PRIME[M + i];
    break;
  case 1:
    BUFFER[50 + M] = PRIME[M + i];
    break;
  } 
 P11: // drukowanie wiersza
  switch (B) {
  case 0:
    printf("%i,", BUFFER[M]);
    break;
  case 1:
    printf("%i,", BUFFER[50 + M]);
    break;
  } 
  M = M + 1;
  if (M < 50) goto P10;
  printf("\n");
 P12: // ?
  B = 1 - B;
  M = 0;
  i = i + 50;
  if (i < 500) goto P10;
  return 0;
}
